/*
 * MIT License
 *
 * Copyright (c) 2018 yadu.liu
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */
package com.flyme.module.base.client.api;

import com.flyme.common.core.model.ResultBody;
import com.flyme.common.core.model.query.PagerInfo;
import com.flyme.module.base.client.dto.SysRankDto;
import com.flyme.module.base.client.dto.SysUserDto;
import com.flyme.module.base.client.dto.UserabilityDto;
import com.flyme.module.base.client.entity.SysUser;
import org.springframework.web.bind.annotation.*;

/**
 * 企业管理接口
 */
@RequestMapping("/staff/")
public interface SysStaffRemoteService {

    /**
     * 员工列表
     */
    @PostMapping("list")
    ResultBody list(@ModelAttribute PagerInfo pagerInfo, @ModelAttribute SysUser user);

    /**
     * 员工详情
     */
    @GetMapping("staffDetail/{userId}")
    ResultBody staffDetail(@PathVariable Long userId);

    /**
     * 员工项目分数
     */
    @GetMapping("staffScore/{userId}")
    ResultBody staffScore(@PathVariable Long userId);

    /**
     * 添加系统用户
     *
     * @return
     */
    @PostMapping("addStaff")
    ResultBody addStaff(@ModelAttribute("user") SysUserDto user);

    /**
     * 更新员工信息
     */
    @PostMapping("editStaff")
    ResultBody editStaff(@ModelAttribute("user") SysUserDto user);

    /**
     * 员工项目分数
     */
    @GetMapping("getDepartment/{parentId}")
    ResultBody getDepartment(@PathVariable String parentId);

    /**
     * 员工详情
     */
    @GetMapping("staffInfo/{userId}")
    ResultBody staffInfo(@PathVariable Long userId);

    /**
     * 批量删除
     *
     * @return
     */
    @PostMapping("delByIds")
    ResultBody delByIds(@RequestParam String[] ids);

    /**
     * hr打分
     */
    @PostMapping("hrGrade")
    ResultBody hrGrade(@ModelAttribute UserabilityDto userability);

    /**
     * 添加企业黑名单
     */
    @GetMapping("addBlacklist/{userId}")
    ResultBody addBlacklist(@PathVariable Long userId);

    /**
     * 移除黑名单
     */
    @GetMapping("delBlacklist/{userId}")
    ResultBody delBlacklist(@PathVariable Long userId);

    /**
     * 企业排名
     * type:1本企业排名，2所有企业内排名
     */
    @PostMapping("companyRank")
    ResultBody companyRank(@ModelAttribute PagerInfo pagerInfo, @ModelAttribute SysRankDto sysRankDto);

}
